/**
 * 网络请求接口 httpRequest
 * @param {*} options 
 * @param {string} url 请求网址
 * @param {object} data 请求数据
 * @param {string} method 请求方法
 * @param {object} header 请求头
 */
export const httpRequest = options => {
  const {
    url,
    data = {},
    method = 'GET',
    header = {
      'content-type': 'application/x-www-form-urlencoded'
    }
  } = options
  return new Promise((resolve, reject) => {
    if (url === undefined || url === '')
      reject('url不能为空')
    try {
      wx.showNavigationBarLoading()
      wx.request({
        url,
        data,
        method,
        header,
        success: (res) => {
          if (res.statusCode === 200 && typeof res.data === 'object') {
            resolve(res.data)
          } else {
            showToast('网络连接错误，接口未正确响应')
            reject(res)
          }
        },
        fail: (err) => {
          showToast('网络连接错误，请求失败')
          reject(err)
        },
        complete: () => {
          wx.hideNavigationBarLoading()
        }
      })
    } catch (e) {
      showToast('网络连接错误，请求失败')
      reject(e)
    }
  })
}

/**
 * 显示加载状态 showLoading
 * @param {string} title 提示信息
 */
export const showLoading = (title = '努力加载中') => {
  wx.showLoading({
    title
  })
}

/**
 * 隐藏加载状态 hideLoading
 */
export const hideLoading = () => {
  wx.hideLoading()
}

/**
 * 文字提示 showToast
 * @param {string} title 提示信息
 * @param {int} duration 显示时长
 * @param {string} icon 显示图标
 */
export const showToast = (title, duration = 2000, icon = 'none') => {
  wx.showToast({
    title,
    icon,
    duration
  })
}

/**
 * 成功提示 showToastSuccess
 * @param {string} title 提示信息
 */
export const showToastSuccess = (title = '操作成功') => {
  wx.showToast({
    title,
    icon: 'success',
    mask: true,
    duration: 2000,
  })
}

/**
 * 弹窗提示 showModal
 * @param {string} content 提示内容
 * @param {string} title 提示标题
 */
export const showModal = (content, title = '提示') => {
  wx.showModal({
    title,
    content,
    showCancel: false,
  })
}